/*
 * @Descripttion: 核酸宝项目前端
 * @version: 
 * @Author: 杜宇轩
 * @Date: 2022-05-22 05:23:33
 * @LastEditors: 杜宇轩
 * @LastEditTime: 2022-05-22 06:23:02
 */
import axios from 'axios';
import store from '../store';
import { Message } from 'element-ui';

// 覆写库的正式环境的路径。生产环境为网关地址，开发环境及测试环境设置请求到/api路由代理
// process.env.NODE_ENV === 'production' 生产环境
// process.env.NODE_ENV === 'development' 开发环境
// process.env.NODE_ENV === 'test' 测试环境
axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? './' : '/api';
// 现在，在超时前，所有请求都会等待 30 秒
axios.defaults.timeout = 30000;
// 添加请求拦截器
axios.interceptors.request.use(function(axiosRequestConfig) {
  // 在此处设置请求发送前的各种配置信息，具体Congfig内容参见axios文档http://www.axios-js.com/zh-cn/docs/
  // 开启跨域携带cookie
  axiosRequestConfig.withCredentials = false;


  // 在请求头中加token
  if (axiosRequestConfig.url.indexOf('login') === -1 &&
      axiosRequestConfig.url.indexOf('register') === -1 &&
      axiosRequestConfig.url.indexOf('/natms/region/allInfo') === -1) {
    axiosRequestConfig.headers.token = store.state.commonUser.token.token;
  }

  // for production, to do something
  return axiosRequestConfig;
}, function(error) {
  // 对请求错误做些什么
  Message.error(error.message);
  return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function(axiosResponse) {
  // 对响应数据做点什么
  if (!axiosResponse.data.code) {
    return axiosResponse.data;
  }
  // 不为200则错误
  if (axiosResponse.data.code !== 200) {
    const errorMsg = typeof axiosResponse.data.msg === 'string' ? axiosResponse.data.msg : 'network error';
    Message.error(errorMsg);
    return Promise.reject(new Error(errorMsg));
  }
  return axiosResponse.data.data;
}, function(error) {
  Message.error(error.message);
  // 对响应错误做点什么
  return Promise.reject(error);
});
